/* 导入模块包 */
const db = require('../db/db');
const bcrypt = require('bcryptjs')




/* 获取用户信息的路由函数 */
const userinfo = (req, res) => {
    /* 设置sql语句 */
    const sqlStr = "select id,username,nickname,email,user_pic from ev_users where id = ?"
    db.query(sqlStr, req.user.id, (err, result) => {
        /* 判断sql语句是否正确 */
        if (err) return res.cc(err)
        /* 查询失败 */
        if (result.length === 0) return res.cc("获取用户信息失败! ")
        /* sql语句查询成功后,将数据响应给客户端 */
        res.send({
            stauts: 0,
            message: "获取用户信息成功!　",
            data: { ...result[0] }
        })
    })
}

/* 更新用户信息的路由函数 */
const updateUserInfo = (req, res) => {
    /* 获取用户提交的数据 */
    const updata = req.body
    /* 设置sql语句 */
    const sqlStr = 'update ev_users set ? where id = ?'
    /* 执行sql语句 */
    db.query(sqlStr, [updata, updata.id], (err, result) => {
        /* 判断sql语句是否正确 */
        if (err) return res.cc(err)
        if (result.affectedRows !== 1) return res.cc("更新用户信息失败! ")
        res.send({
            status: 0,
            message: "更新用户信息成功! "
        })

    })
}

/* 重置密码功能 */
const updatapwd = (req, res) => {
    /* 获取客户端token解密数据 */
    const updata = req.user
    // console.log(req.user);
    // console.log(req.body);
    /* 创建sql语句 */
    const sqlStr = "select * from ev_users where username = ?"
    /* 执行sql语句 */
    db.query(sqlStr, updata.username, (err, result) => {
        /* 判断sql语句是否正确 */
        if (err) return res.cc(err)
        /* 判断用户是否存在 */
        if (result.length === 0) return res.cc("用户名不存在! ")
        /* 查询成功后,修改密码 */
        /* 判断旧密码是否正确 */
        const flag = bcrypt.compareSync(req.body.oldPwd, result[0].password)
        if (!flag) return res.cc("原密码错误! ")
        /* 将新密码加密 */
        req.body.newPwd = bcrypt.hashSync(req.body.newPwd, 10);
        /* 创建sql语句 */
        const sqlStr = "update ev_users set password = ? where id = ?"
        /* 执行sql语句 */
        db.query(sqlStr, [req.body.newPwd, updata.id], (err, result) => {
            /* 判断sql语句是否正确 */
            if (err) return res.cc(err)
            /* 判断修改是否成功 */
            if (result.affectedRows !== 1) return res.cc("重置密码失败! ")
            res.cc("重置密码成功! ", 0)
        })
    })
}

/* 更新用户头像功能 */
const updataAvatar = (req, res) => {
    /* 获取用户提交的数据 */
    const updata = req.body
    /* 设置sql语句 */
    const sqlStr = 'update ev_users set user_pic = ? where id = ?'
    /* 执行sql语句 */
    db.query(sqlStr, [updata.avatar, req.user.id], (err, result) => {
        /* 判断sql语句是否正确 */
        if (err) return res.cc(err)
        /* 判断是否更新成功 */
        if (result.affectedRows !== 1) return res.cc("更新用户头像失败! ")
        res.send({
            status: 0,
            message: "更新用户头像成功! "
        })

    })
}







module.exports = {
    userinfo,
    updateUserInfo,
    updatapwd,
    updataAvatar,
}